{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2nqxFEmUEJtN"
   },
   "source": [
    "# Определение тональности отзывов на банки с помощью классических алгоритмов машинного обучения\n",
    "\n",
    "Используем логистическую регрессию и мешок слов.\n",
    "\n",
    "Курс \"[Подготовка школьников к участию в олимпиадах по искусственному интеллекту](https://edu.mipt.ru/ai/)\".\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "29_zjsOiEVbw"
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import pymorphy2\n",
    "import nltk\n",
    "from nltk.tokenize import word_tokenize\n",
    "from nltk.corpus import stopwords\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "from collections import Counter\n",
    "import wget"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tqdm.notebook import tqdm\n",
    "tqdm.pandas()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "7KYR3C6BnTZJ",
    "outputId": "0b670ec1-a46d-4630-e4a3-7e415cacb37c"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[nltk_data] Downloading package punkt to\n",
      "[nltk_data]     C:\\Users\\sozyk\\AppData\\Roaming\\nltk_data...\n",
      "[nltk_data]   Package punkt is already up-to-date!\n",
      "[nltk_data] Downloading package stopwords to\n",
      "[nltk_data]     C:\\Users\\sozyk\\AppData\\Roaming\\nltk_data...\n",
      "[nltk_data]   Package stopwords is already up-to-date!\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nltk.download('punkt')\n",
    "nltk.download('stopwords')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8etz_oQ0aKoV"
   },
   "source": [
    "Константы"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "id": "MmtoD1fpaJJB"
   },
   "outputs": [],
   "source": [
    "max_words = 10000\n",
    "random_state = 42"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2e6G1MDEf7cW"
   },
   "source": [
    "## Загружаем и готовим набор данных"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "7JXJr-AXgA6X",
    "outputId": "db677659-1234-4eb7-a15a-20fc839f9ee3"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100% [........................................................................] 40676572 / 40676572"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'banks.csv'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wget.download('https://www.dropbox.com/scl/fi/mhiwx4plaua183bnuqt5e/train2.csv?rlkey=wv4dalbsutmzu5br9qv5ez21v&dl=1',\n",
    "              'banks.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "i9XvxDmWhHPm"
   },
   "outputs": [],
   "source": [
    "banks = pd.read_csv('banks.csv', index_col='id');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 455
    },
    "id": "GlVkvo-emBfb",
    "outputId": "ef433bb0-7c8b-44c6-db7e-faf4ce605ca8"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>text</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>В Альфа-Банке работает замечательная девушка -...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Оформляя рассрочку в м. Видео в меге тёплый ст...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Очень порадовала оперативность работы в банке....</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Имела неосторожность оформить потреб. кредит в...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Небольшая предыстория: Нашел на сайте MDM банк...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13994</th>\n",
       "      <td>О высокой надёжности МКБ, порядочности и добро...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13995</th>\n",
       "      <td>Обслуживаюсь в офисе на Чернореченской 42а, ка...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13996</th>\n",
       "      <td>Попала сегодня в очень неприятную ситуацию. Ре...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13997</th>\n",
       "      <td>Добрый день! Давно являюсь клиентом банка Русс...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13998</th>\n",
       "      <td>Сначала было все банально. Взял в кредит mp3 п...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>13999 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    text  label\n",
       "id                                                             \n",
       "0      В Альфа-Банке работает замечательная девушка -...      1\n",
       "1      Оформляя рассрочку в м. Видео в меге тёплый ст...      0\n",
       "2      Очень порадовала оперативность работы в банке....      1\n",
       "3      Имела неосторожность оформить потреб. кредит в...      0\n",
       "4      Небольшая предыстория: Нашел на сайте MDM банк...      0\n",
       "...                                                  ...    ...\n",
       "13994  О высокой надёжности МКБ, порядочности и добро...      1\n",
       "13995  Обслуживаюсь в офисе на Чернореченской 42а, ка...      1\n",
       "13996  Попала сегодня в очень неприятную ситуацию. Ре...      1\n",
       "13997  Добрый день! Давно являюсь клиентом банка Русс...      1\n",
       "13998  Сначала было все банально. Взял в кредит mp3 п...      0\n",
       "\n",
       "[13999 rows x 2 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "banks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "bhnSU0F6wUZp"
   },
   "outputs": [],
   "source": [
    "def preprocess(text, stop_words, punctuation_marks, morph):\n",
    "    tokens = word_tokenize(text.lower())\n",
    "    preprocessed_text = []\n",
    "    for token in tokens:\n",
    "        if token not in punctuation_marks:\n",
    "            lemma = morph.parse(token)[0].normal_form\n",
    "            if lemma not in stop_words:\n",
    "                preprocessed_text.append(lemma)\n",
    "    return preprocessed_text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "id": "Ic2qusuK7_3r"
   },
   "outputs": [],
   "source": [
    "punctuation_marks = ['!', ',', '(', ')', ':', '-', '?', '.', '..', '...', '«', '»', ';', '–', '--']\n",
    "stop_words = stopwords.words(\"russian\")\n",
    "morph = pymorphy2.MorphAnalyzer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "id": "4kCef9Kkx2ai"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4de7ea977c9b44098730b1a94317be4e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/13999 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "banks['Preprocessed_texts'] = banks.progress_apply(lambda row: preprocess(row['text'], stop_words, punctuation_marks, morph), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 629
    },
    "id": "oUqlQ-LEDwxR",
    "outputId": "d03a217b-b67e-4946-b30b-803ce7b31653"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>text</th>\n",
       "      <th>label</th>\n",
       "      <th>Preprocessed_texts</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>В Альфа-Банке работает замечательная девушка -...</td>\n",
       "      <td>1</td>\n",
       "      <td>[альфа-банк, работать, замечательный, девушка,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Оформляя рассрочку в м. Видео в меге тёплый ст...</td>\n",
       "      <td>0</td>\n",
       "      <td>[оформлять, рассрочка, м., видео, мег, тёплый,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Очень порадовала оперативность работы в банке....</td>\n",
       "      <td>1</td>\n",
       "      <td>[очень, порадовать, оперативность, работа, бан...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Имела неосторожность оформить потреб. кредит в...</td>\n",
       "      <td>0</td>\n",
       "      <td>[иметь, неосторожность, оформить, потреба, кре...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Небольшая предыстория: Нашел на сайте MDM банк...</td>\n",
       "      <td>0</td>\n",
       "      <td>[небольшой, предыстория, найти, сайт, mdm, бан...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13994</th>\n",
       "      <td>О высокой надёжности МКБ, порядочности и добро...</td>\n",
       "      <td>1</td>\n",
       "      <td>[высокий, надёжность, мкб, порядочность, добро...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13995</th>\n",
       "      <td>Обслуживаюсь в офисе на Чернореченской 42а, ка...</td>\n",
       "      <td>1</td>\n",
       "      <td>[обслуживаться, офис, чернореченский, 42а, физ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13996</th>\n",
       "      <td>Попала сегодня в очень неприятную ситуацию. Ре...</td>\n",
       "      <td>1</td>\n",
       "      <td>[попасть, сегодня, очень, неприятный, ситуация...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13997</th>\n",
       "      <td>Добрый день! Давно являюсь клиентом банка Русс...</td>\n",
       "      <td>1</td>\n",
       "      <td>[добрый, день, давно, являться, клиент, банк, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13998</th>\n",
       "      <td>Сначала было все банально. Взял в кредит mp3 п...</td>\n",
       "      <td>0</td>\n",
       "      <td>[сначала, всё, банально, взять, кредит, mp3, п...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>13999 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    text  label  \\\n",
       "id                                                                \n",
       "0      В Альфа-Банке работает замечательная девушка -...      1   \n",
       "1      Оформляя рассрочку в м. Видео в меге тёплый ст...      0   \n",
       "2      Очень порадовала оперативность работы в банке....      1   \n",
       "3      Имела неосторожность оформить потреб. кредит в...      0   \n",
       "4      Небольшая предыстория: Нашел на сайте MDM банк...      0   \n",
       "...                                                  ...    ...   \n",
       "13994  О высокой надёжности МКБ, порядочности и добро...      1   \n",
       "13995  Обслуживаюсь в офисе на Чернореченской 42а, ка...      1   \n",
       "13996  Попала сегодня в очень неприятную ситуацию. Ре...      1   \n",
       "13997  Добрый день! Давно являюсь клиентом банка Русс...      1   \n",
       "13998  Сначала было все банально. Взял в кредит mp3 п...      0   \n",
       "\n",
       "                                      Preprocessed_texts  \n",
       "id                                                        \n",
       "0      [альфа-банк, работать, замечательный, девушка,...  \n",
       "1      [оформлять, рассрочка, м., видео, мег, тёплый,...  \n",
       "2      [очень, порадовать, оперативность, работа, бан...  \n",
       "3      [иметь, неосторожность, оформить, потреба, кре...  \n",
       "4      [небольшой, предыстория, найти, сайт, mdm, бан...  \n",
       "...                                                  ...  \n",
       "13994  [высокий, надёжность, мкб, порядочность, добро...  \n",
       "13995  [обслуживаться, офис, чернореченский, 42а, физ...  \n",
       "13996  [попасть, сегодня, очень, неприятный, ситуация...  \n",
       "13997  [добрый, день, давно, являться, клиент, банк, ...  \n",
       "13998  [сначала, всё, банально, взять, кредит, mp3, п...  \n",
       "\n",
       "[13999 rows x 3 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "banks"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "u6qbrT57X1pj"
   },
   "source": [
    "Считаем частоту слов во всех отзывах"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "id": "xeL0KiDxXDS2"
   },
   "outputs": [],
   "source": [
    "words = Counter()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "id": "5sJuUJmiWu3h"
   },
   "outputs": [],
   "source": [
    "for txt in banks['Preprocessed_texts']:\n",
    "    words.update(txt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "z4UaPuArMod1",
    "outputId": "664c201f-4e7b-400f-8ae3-5429527e6b27"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('банк', 58189),\n",
       " ('карта', 30560),\n",
       " ('это', 28660),\n",
       " ('всё', 20599),\n",
       " ('день', 15729),\n",
       " ('сотрудник', 14527),\n",
       " ('который', 14519),\n",
       " ('кредит', 14490),\n",
       " ('деньга', 13701),\n",
       " ('счёт', 13681),\n",
       " ('отделение', 13414),\n",
       " ('клиент', 12681),\n",
       " ('мочь', 11140),\n",
       " ('свой', 11128),\n",
       " ('год', 10378),\n",
       " ('сказать', 9990),\n",
       " ('вопрос', 9638),\n",
       " ('ещё', 9606),\n",
       " ('очень', 9226),\n",
       " ('весь', 9004)]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words.most_common(20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xvMGD3wPY0Jo"
   },
   "source": [
    "Создаем словарь, упорядоченный по частоте\n",
    "\n",
    "В словаре будем использовать 2 специальных кода:\n",
    "- Код заполнитель: 0\n",
    "- Неизвестное слово: 1\n",
    "\n",
    "Нумерация слов в словаре начинается с 2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "id": "YHNfN0QoY51K"
   },
   "outputs": [],
   "source": [
    "# Словарь, отображающий слова в коды\n",
    "word_to_index = dict()\n",
    "# Словарь, отображающий коды в слова\n",
    "index_to_word = dict()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZXc73aNPaSX7"
   },
   "source": [
    "Создаем словари"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "id": "8m6ZXwixrMf-"
   },
   "outputs": [],
   "source": [
    "for i, word in enumerate(words.most_common(max_words - 2)):\n",
    "    word_to_index[word[0]] = i + 2\n",
    "    index_to_word[i + 2] = word[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Rw2dQr_VRZEU",
    "outputId": "d973e7cb-8a4c-4d88-984c-6f09ac8388a2"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'банк': 2,\n",
       " 'карта': 3,\n",
       " 'это': 4,\n",
       " 'всё': 5,\n",
       " 'день': 6,\n",
       " 'сотрудник': 7,\n",
       " 'который': 8,\n",
       " 'кредит': 9,\n",
       " 'деньга': 10,\n",
       " 'счёт': 11,\n",
       " 'отделение': 12,\n",
       " 'клиент': 13,\n",
       " 'мочь': 14,\n",
       " 'свой': 15,\n",
       " 'год': 16,\n",
       " 'сказать': 17,\n",
       " 'вопрос': 18,\n",
       " 'ещё': 19,\n",
       " 'очень': 20,\n",
       " 'весь': 21,\n",
       " 'время': 22,\n",
       " 'сумма': 23,\n",
       " 'кредитный': 24,\n",
       " 'получить': 25,\n",
       " 'офис': 26,\n",
       " 'проблема': 27,\n",
       " 'заявление': 28,\n",
       " 'договор': 29,\n",
       " 'работа': 30,\n",
       " 'платёж': 31,\n",
       " 'банкомат': 32,\n",
       " 'телефон': 33,\n",
       " 'позвонить': 34,\n",
       " 'месяц': 35,\n",
       " 'документ': 36,\n",
       " 'дать': 37,\n",
       " 'ответ': 38,\n",
       " 'решить': 39,\n",
       " 'хотеть': 40,\n",
       " 'обслуживание': 41,\n",
       " 'звонить': 42,\n",
       " 'ваш': 43,\n",
       " 'работать': 44,\n",
       " 'услуга': 45,\n",
       " 'претензия': 46,\n",
       " 'прийти': 47,\n",
       " 'вклад': 48,\n",
       " 'звонок': 49,\n",
       " 'номер': 50,\n",
       " 'написать': 51,\n",
       " 'большой': 52,\n",
       " 'ситуация': 53,\n",
       " 'рубль': 54,\n",
       " 'человек': 55,\n",
       " 'минута': 56,\n",
       " 'сделать': 57,\n",
       " 'просто': 58,\n",
       " 'говорить': 59,\n",
       " 'средство': 60,\n",
       " 'альфа-банк': 61,\n",
       " 'заявка': 62,\n",
       " 'срок': 63,\n",
       " 'очередь': 64,\n",
       " '2': 65,\n",
       " 'первый': 66,\n",
       " 'знать': 67,\n",
       " 'информация': 68,\n",
       " 'новый': 69,\n",
       " 'оформить': 70,\n",
       " 'должный': 71,\n",
       " 'обратиться': 72,\n",
       " 'спасибо': 73,\n",
       " 'смс': 74,\n",
       " 'пользоваться': 75,\n",
       " 'девушка': 76,\n",
       " 'данный': 77,\n",
       " 'комиссия': 78,\n",
       " 'никакой': 79,\n",
       " 'несколько': 80,\n",
       " '%': 81,\n",
       " 'менеджер': 82,\n",
       " 'процент': 83,\n",
       " 'являться': 84,\n",
       " 'сайт': 85,\n",
       " 'операция': 86,\n",
       " 'условие': 87,\n",
       " 'хороший': 88,\n",
       " 'оператор': 89,\n",
       " 'отзыв': 90,\n",
       " 'стать': 91,\n",
       " 'решение': 92,\n",
       " 'нужно': 93,\n",
       " 'сообщить': 94,\n",
       " 'ждать': 95,\n",
       " 'сразу': 96,\n",
       " 'специалист': 97,\n",
       " 'также': 98,\n",
       " 'почему': 99,\n",
       " 'неделя': 100,\n",
       " 'перевод': 101,\n",
       " 'течение': 102,\n",
       " 'час': 103,\n",
       " 'сегодня': 104,\n",
       " 'ответить': 105,\n",
       " 'хотя': 106,\n",
       " 'т.к': 107,\n",
       " 'момент': 108,\n",
       " 'писать': 109,\n",
       " 'следующий': 110,\n",
       " '*': 111,\n",
       " 'обращение': 112,\n",
       " 'иметь': 113,\n",
       " '5': 114,\n",
       " 'открыть': 115,\n",
       " 'просить': 116,\n",
       " '3': 117,\n",
       " '10': 118,\n",
       " 'отношение': 119,\n",
       " 'г.': 120,\n",
       " 'взять': 121,\n",
       " 'быстро': 122,\n",
       " 'случай': 123,\n",
       " 'предложить': 124,\n",
       " 'линия': 125,\n",
       " 'наш': 126,\n",
       " 'задолженность': 127,\n",
       " 'итог': 128,\n",
       " 'выдать': 129,\n",
       " 'самый': 130,\n",
       " 'вообще': 131,\n",
       " 'делать': 132,\n",
       " 'общий': 133,\n",
       " 'дело': 134,\n",
       " 'принять': 135,\n",
       " 'сбербанк': 136,\n",
       " 'лимит': 137,\n",
       " 'оказаться': 138,\n",
       " 'каждый': 139,\n",
       " 'смочь': 140,\n",
       " 'руб': 141,\n",
       " 'оплата': 142,\n",
       " 'нужный': 143,\n",
       " 'пройти': 144,\n",
       " 'пока': 145,\n",
       " 'приходить': 146,\n",
       " 'страховка': 147,\n",
       " 'объяснить': 148,\n",
       " 'думать': 149,\n",
       " 'слово': 150,\n",
       " 'какой-то': 151,\n",
       " 'получение': 152,\n",
       " 'помочь': 153,\n",
       " 'никто': 154,\n",
       " 'прийтись': 155,\n",
       " 'горячий': 156,\n",
       " 'погашение': 157,\n",
       " 'альфа': 158,\n",
       " 'оформление': 159,\n",
       " 'вернуть': 160,\n",
       " 'история': 161,\n",
       " 'брать': 162,\n",
       " 'попросить': 163,\n",
       " 'именно': 164,\n",
       " 'последний': 165,\n",
       " '1': 166,\n",
       " 'возможность': 167,\n",
       " 'сотрудница': 168,\n",
       " 'адрес': 169,\n",
       " 'закрыть': 170,\n",
       " 'получать': 171,\n",
       " 'узнать': 172,\n",
       " 'добрый': 173,\n",
       " 'служба': 174,\n",
       " 'интернет': 175,\n",
       " 'внести': 176,\n",
       " 'ошибка': 177,\n",
       " 'идти': 178,\n",
       " 'друг': 179,\n",
       " 'система': 180,\n",
       " 'хотеться': 181,\n",
       " 'указать': 182,\n",
       " 'оплатить': 183,\n",
       " 'снова': 184,\n",
       " 'любой': 185,\n",
       " 'рабочий': 186,\n",
       " 'москва': 187,\n",
       " 'денежный': 188,\n",
       " 'покупка': 189,\n",
       " 'около': 190,\n",
       " 'лицо': 191,\n",
       " 'платить': 192,\n",
       " 'положительный': 193,\n",
       " 'вежливый': 194,\n",
       " 'отправить': 195,\n",
       " 'снять': 196,\n",
       " 'оставить': 197,\n",
       " 'поэтому': 198,\n",
       " 'видеть': 199,\n",
       " 'назад': 200,\n",
       " 'касса': 201,\n",
       " 'связь': 202,\n",
       " 'конец': 203,\n",
       " 'поддержка': 204,\n",
       " 'дебетовый': 205,\n",
       " '000': 206,\n",
       " 'остаться': 207,\n",
       " 'справка': 208,\n",
       " 'предоставить': 209,\n",
       " 'отвечать': 210,\n",
       " 'банковский': 211,\n",
       " 'второй': 212,\n",
       " 'погасить': 213,\n",
       " 'место': 214,\n",
       " 'карточка': 215,\n",
       " 'письмо': 216,\n",
       " 'обращаться': 217,\n",
       " 'полный': 218,\n",
       " 'понимать': 219,\n",
       " 'просьба': 220,\n",
       " 'долг': 221,\n",
       " 'рассмотрение': 222,\n",
       " 'закрытие': 223,\n",
       " 'причина': 224,\n",
       " 'ставка': 225,\n",
       " 'открытие': 226,\n",
       " 'что-то': 227,\n",
       " 'приехать': 228,\n",
       " 'продукт': 229,\n",
       " 'дата': 230,\n",
       " 'находиться': 231,\n",
       " 'бинбанка': 232,\n",
       " 'страхование': 233,\n",
       " 'отказ': 234,\n",
       " 'приятно': 235,\n",
       " 'сторона': 236,\n",
       " 'давать': 237,\n",
       " 'личный': 238,\n",
       " 'уточнить': 239,\n",
       " 'результат': 240,\n",
       " 'действие': 241,\n",
       " 'выписка': 242,\n",
       " 'паспорт': 243,\n",
       " 'рассказать': 244,\n",
       " 'понять': 245,\n",
       " 'считать': 246,\n",
       " '4': 247,\n",
       " 'из-за': 248,\n",
       " 'авангард': 249,\n",
       " '30': 250,\n",
       " 'магазин': 251,\n",
       " 'отдел': 252,\n",
       " 'тариф': 253,\n",
       " 'оформлять': 254,\n",
       " 'кол-центр': 255,\n",
       " 'число': 256,\n",
       " 'сделка': 257,\n",
       " 'списать': 258,\n",
       " 'далее': 259,\n",
       " 'дополнительный': 260,\n",
       " 'отказаться': 261,\n",
       " 'найти': 262,\n",
       " 'спросить': 263,\n",
       " 'пара': 264,\n",
       " 'разобраться': 265,\n",
       " 'начать': 266,\n",
       " 'пытаться': 267,\n",
       " 'надеяться': 268,\n",
       " 'одобрить': 269,\n",
       " 'благодарность': 270,\n",
       " 'начало': 271,\n",
       " 'данные': 272,\n",
       " 'бинбанк': 273,\n",
       " 'удобный': 274,\n",
       " 'перезвонить': 275,\n",
       " 'обещать': 276,\n",
       " 'готовый': 277,\n",
       " 'город': 278,\n",
       " 'программа': 279,\n",
       " 'предложение': 280,\n",
       " 'пойти': 281,\n",
       " 'почта': 282,\n",
       " 'подать': 283,\n",
       " 'составить': 284,\n",
       " 'размер': 285,\n",
       " 'довольный': 286,\n",
       " 'внимание': 287,\n",
       " 'анкета': 288,\n",
       " 'сервис': 289,\n",
       " 'пора': 290,\n",
       " '15': 291,\n",
       " 'мобильный': 292,\n",
       " 'перевести': 293,\n",
       " 'произойти': 294,\n",
       " 'имя': 295,\n",
       " 'общение': 296,\n",
       " 'необходимый': 297,\n",
       " 'списание': 298,\n",
       " 'огромный': 299,\n",
       " 'помощь': 300,\n",
       " 'причём': 301,\n",
       " '20': 302,\n",
       " 'поступить': 303,\n",
       " 'возврат': 304,\n",
       " 'декабрь': 305,\n",
       " 'бесплатный': 306,\n",
       " 'отметить': 307,\n",
       " 'март': 308,\n",
       " 'снятие': 309,\n",
       " 'квартира': 310,\n",
       " 'долго': 311,\n",
       " 'её': 312,\n",
       " 'наличный': 313,\n",
       " 'стоить': 314,\n",
       " 'разный': 315,\n",
       " 'операционист': 316,\n",
       " 'заполнить': 317,\n",
       " 'интернет-банк': 318,\n",
       " 'некоторый': 319,\n",
       " 'качество': 320,\n",
       " 'маленький': 321,\n",
       " 'штраф': 322,\n",
       " 'рука': 323,\n",
       " 'очередной': 324,\n",
       " 'подписать': 325,\n",
       " 'период': 326,\n",
       " 'плюс': 327,\n",
       " 'компания': 328,\n",
       " 'остаток': 329,\n",
       " 'зарплатный': 330,\n",
       " 'филиал': 331,\n",
       " 'сколько': 332,\n",
       " 'провести': 333,\n",
       " 'больший': 334,\n",
       " 'ул': 335,\n",
       " 'забрать': 336,\n",
       " 'представитель': 337,\n",
       " 'зайти': 338,\n",
       " 'разговор': 339,\n",
       " 'просрочка': 340,\n",
       " 'сообщение': 341,\n",
       " 'депозит': 342,\n",
       " 'удобно': 343,\n",
       " 'действительно': 344,\n",
       " 'досрочный': 345,\n",
       " 'связаться': 346,\n",
       " 'близкий': 347,\n",
       " 'прислать': 348,\n",
       " 'обслуживаться': 349,\n",
       " 'сей': 350,\n",
       " 'уйти': 351,\n",
       " 'возникнуть': 352,\n",
       " 'подключить': 353,\n",
       " 'увидеть': 354,\n",
       " 'однако': 355,\n",
       " 'администратор': 356,\n",
       " 'т.е': 357,\n",
       " 'впечатление': 358,\n",
       " 'приятный': 359,\n",
       " 'кредитка': 360,\n",
       " 'порядок': 361,\n",
       " 'видимо': 362,\n",
       " 'пакет': 363,\n",
       " 'дом': 364,\n",
       " 'заблокировать': 365,\n",
       " 'право': 366,\n",
       " 'центр': 367,\n",
       " 'достаточно': 368,\n",
       " 'жалоба': 369,\n",
       " 'выбрать': 370,\n",
       " 'копия': 371,\n",
       " 'правда': 372,\n",
       " 'повод': 373,\n",
       " 'либо': 374,\n",
       " 'ожидание': 375,\n",
       " 'выдача': 376,\n",
       " 'страховой': 377,\n",
       " 'работник': 378,\n",
       " 'электронный': 379,\n",
       " 'сожаление': 380,\n",
       " 'необходимо': 381,\n",
       " 'положить': 382,\n",
       " 'организация': 383,\n",
       " 'давно': 384,\n",
       " 'предлагать': 385,\n",
       " 'оценка': 386,\n",
       " 'ранний': 387,\n",
       " 'высокий': 388,\n",
       " 'требовать': 389,\n",
       " 'факт': 390,\n",
       " 'терминал': 391,\n",
       " 'тысяча': 392,\n",
       " 'далёкий': 393,\n",
       " 'принимать': 394,\n",
       " 'лично': 395,\n",
       " 'запрос': 396,\n",
       " 'апрель': 397,\n",
       " 'проверить': 398,\n",
       " 'возможно': 399,\n",
       " '7': 400,\n",
       " 'начаться': 401,\n",
       " 'текущий': 402,\n",
       " 'подойти': 403,\n",
       " 'альф': 404,\n",
       " 'небольшой': 405,\n",
       " 'закрытый': 406,\n",
       " 'жизнь': 407,\n",
       " 'оплачивать': 408,\n",
       " 'вид': 409,\n",
       " 'полностью': 410,\n",
       " 'минус': 411,\n",
       " 'суд': 412,\n",
       " 'спрашивать': 413,\n",
       " 'точно': 414,\n",
       " 'кстати': 415,\n",
       " 'образ': 416,\n",
       " 'руководитель': 417,\n",
       " 'кроме': 418,\n",
       " 'курс': 419,\n",
       " 'май': 420,\n",
       " 'январь': 421,\n",
       " 'общаться': 422,\n",
       " 'посмотреть': 423,\n",
       " 'воспользоваться': 424,\n",
       " 'сначала': 425,\n",
       " 'отказать': 426,\n",
       " 'открывать': 427,\n",
       " 'быстрый': 428,\n",
       " 'единственный': 429,\n",
       " 'оперативно': 430,\n",
       " 'рассмотреть': 431,\n",
       " 'потребительский': 432,\n",
       " 'поставить': 433,\n",
       " 'руководство': 434,\n",
       " 'опыт': 435,\n",
       " 'всякий': 436,\n",
       " 'потратить': 437,\n",
       " 'требование': 438,\n",
       " 'ипотека': 439,\n",
       " 'часть': 440,\n",
       " 'объяснять': 441,\n",
       " 'снимать': 442,\n",
       " 'чек': 443,\n",
       " 'уровень': 444,\n",
       " 'ноябрь': 445,\n",
       " '6': 446,\n",
       " 'август': 447,\n",
       " 'годовой': 448,\n",
       " 'всё-таки': 449,\n",
       " '№': 450,\n",
       " 'сбер': 451,\n",
       " 'происходить': 452,\n",
       " 'сообщать': 453,\n",
       " 'февраль': 454,\n",
       " 'купюра': 455,\n",
       " 'технический': 456,\n",
       " 'процесс': 457,\n",
       " 'выразить': 458,\n",
       " 'понятно': 459,\n",
       " 'понравиться': 460,\n",
       " 'заказать': 461,\n",
       " 'заплатить': 462,\n",
       " 'отсутствие': 463,\n",
       " 'ранее': 464,\n",
       " 'простой': 465,\n",
       " 'рекомендовать': 466,\n",
       " 'туда': 467,\n",
       " 'приходиться': 468,\n",
       " 'вариант': 469,\n",
       " '8': 470,\n",
       " 'июль': 471,\n",
       " 'июнь': 472,\n",
       " 'фамилия': 473,\n",
       " 'подобный': 474,\n",
       " 'ежемесячный': 475,\n",
       " 'знакомый': 476,\n",
       " 'указанный': 477,\n",
       " 'занять': 478,\n",
       " 'забыть': 479,\n",
       " 'чётко': 480,\n",
       " 'бывать': 481,\n",
       " 'форма': 482,\n",
       " 'появиться': 483,\n",
       " 'возникать': 484,\n",
       " '100': 485,\n",
       " 'уважаемый': 486,\n",
       " 'оказываться': 487,\n",
       " 'попытка': 488,\n",
       " 'валюта': 489,\n",
       " 'постоянно': 490,\n",
       " 'октябрь': 491,\n",
       " 'подождать': 492,\n",
       " 'решать': 493,\n",
       " 'примерно': 494,\n",
       " 'поздний': 495,\n",
       " 'вернуться': 496,\n",
       " 'акция': 497,\n",
       " 'третий': 498,\n",
       " 'дозвониться': 499,\n",
       " '+': 500,\n",
       " 'уважение': 501,\n",
       " 'попасть': 502,\n",
       " 'телефонный': 503,\n",
       " 'дальнейший': 504,\n",
       " 'начислить': 505,\n",
       " 'желание': 506,\n",
       " 'назвать': 507,\n",
       " 'вчера': 508,\n",
       " 'персонал': 509,\n",
       " 'здравствуйте': 510,\n",
       " 'утро': 511,\n",
       " 'например': 512,\n",
       " 'вносить': 513,\n",
       " 'лишь': 514,\n",
       " 'читать': 515,\n",
       " 'кабинет': 516,\n",
       " 'управлять': 517,\n",
       " 'вроде': 518,\n",
       " 'получиться': 519,\n",
       " 'спустя': 520,\n",
       " 'ожидать': 521,\n",
       " 'старый': 522,\n",
       " 'несмотря': 523,\n",
       " 'жена': 524,\n",
       " 'цель': 525,\n",
       " 'как-то': 526,\n",
       " 'смотреть': 527,\n",
       " 'рф': 528,\n",
       " 'естественно': 529,\n",
       " 'выясниться': 530,\n",
       " 'выдавать': 531,\n",
       " 'ипотечный': 532,\n",
       " 'сидеть': 533,\n",
       " 'сентябрь': 534,\n",
       " 'зачислить': 535,\n",
       " 'честно': 536,\n",
       " 'интернет-банка': 537,\n",
       " 'сетель': 538,\n",
       " 'поступать': 539,\n",
       " 'расчётный': 540,\n",
       " 'получаться': 541,\n",
       " 'подтвердить': 542,\n",
       " '2016': 543,\n",
       " 'выяснить': 544,\n",
       " 'поскольку': 545,\n",
       " 'ехать': 546,\n",
       " 'передать': 547,\n",
       " 'мало': 548,\n",
       " 'молодой': 549,\n",
       " 'трубка': 550,\n",
       " 'выйти': 551,\n",
       " 'перевыпуск': 552,\n",
       " 'главное': 553,\n",
       " 'россия': 554,\n",
       " 'выпустить': 555,\n",
       " 'плохой': 556,\n",
       " 'немного': 557,\n",
       " 'подумать': 558,\n",
       " 'менее': 559,\n",
       " 'помнить': 560,\n",
       " 'оставаться': 561,\n",
       " 'наверное': 562,\n",
       " 'проходить': 563,\n",
       " 'кассир': 564,\n",
       " 'ладный': 565,\n",
       " 'начинать': 566,\n",
       " 'заниматься': 567,\n",
       " 'отдельный': 568,\n",
       " 'кто-то': 569,\n",
       " 'равно': 570,\n",
       " 'вместо': 571,\n",
       " 'сотрудничество': 572,\n",
       " 'пожалуйста': 573,\n",
       " 'активировать': 574,\n",
       " 'нравиться': 575,\n",
       " 'процедура': 576,\n",
       " 'консультант': 577,\n",
       " 'ставить': 578,\n",
       " 'машина': 579,\n",
       " 'основание': 580,\n",
       " 'вечером': 581,\n",
       " 'кредитование': 582,\n",
       " 'бонус': 583,\n",
       " 'согласиться': 584,\n",
       " 'онлайн': 585,\n",
       " 'евро': 586,\n",
       " 'зарплата': 587,\n",
       " 'выбор': 588,\n",
       " 'отличный': 589,\n",
       " 'выпуск': 590,\n",
       " 'внесение': 591,\n",
       " 'сутки': 592,\n",
       " 'досрочно': 593,\n",
       " 'пункт': 594,\n",
       " 'потерять': 595,\n",
       " 'поехать': 596,\n",
       " 'необходимость': 597,\n",
       " 'обнаружить': 598,\n",
       " 'крупный': 599,\n",
       " 'реквизит': 600,\n",
       " 'закончиться': 601,\n",
       " 'доллар': 602,\n",
       " 'бумага': 603,\n",
       " 'целое': 604,\n",
       " 'посоветовать': 605,\n",
       " 'составлять': 606,\n",
       " 'особенно': 607,\n",
       " 'сбой': 608,\n",
       " 'обслуживать': 609,\n",
       " 'стоять': 610,\n",
       " 'собираться': 611,\n",
       " 'обычно': 612,\n",
       " 'visa': 613,\n",
       " 'подпись': 614,\n",
       " 'недавно': 615,\n",
       " 'московский': 616,\n",
       " 'персональный': 617,\n",
       " 'тыс': 618,\n",
       " 'уведомление': 619,\n",
       " '2014': 620,\n",
       " 'иметься': 621,\n",
       " 'практически': 622,\n",
       " 'консультация': 623,\n",
       " 'остальной': 624,\n",
       " 'пополнение': 625,\n",
       " 'минимальный': 626,\n",
       " 'завтра': 627,\n",
       " 'затем': 628,\n",
       " 'собственный': 629,\n",
       " 'количество': 630,\n",
       " 'бесплатно': 631,\n",
       " 'купить': 632,\n",
       " 'интересный': 633,\n",
       " 'база': 634,\n",
       " 'муж': 635,\n",
       " 'наличие': 636,\n",
       " 'ткс': 637,\n",
       " 'срочно': 638,\n",
       " 'правило': 639,\n",
       " 'использовать': 640,\n",
       " 'безопасность': 641,\n",
       " 'закон': 642,\n",
       " 'финансовый': 643,\n",
       " 'искать': 644,\n",
       " 'заранее': 645,\n",
       " 'изменение': 646,\n",
       " 'успеть': 647,\n",
       " 'отрицательный': 648,\n",
       " 'действовать': 649,\n",
       " 'часто': 650,\n",
       " 'льготный': 651,\n",
       " 'лишний': 652,\n",
       " 'процентный': 653,\n",
       " 'р.': 654,\n",
       " 'казаться': 655,\n",
       " 'подробно': 656,\n",
       " 'мера': 657,\n",
       " 'жить': 658,\n",
       " 'русский': 659,\n",
       " 'выходной': 660,\n",
       " 'заметить': 661,\n",
       " 'товар': 662,\n",
       " 'одобрение': 663,\n",
       " 'довольно': 664,\n",
       " 'пять': 665,\n",
       " 'невозможно': 666,\n",
       " 'удивить': 667,\n",
       " 'предыдущий': 668,\n",
       " 'т.д': 669,\n",
       " 'сложиться': 670,\n",
       " 'вечер': 671,\n",
       " 'подавать': 672,\n",
       " 'удаться': 673,\n",
       " 'профессионализм': 674,\n",
       " 'возможный': 675,\n",
       " 'стандарт': 676,\n",
       " '9': 677,\n",
       " 'вовремя': 678,\n",
       " 'отключить': 679,\n",
       " 'оставлять': 680,\n",
       " 'пример': 681,\n",
       " 'отдать': 682,\n",
       " 'предоставление': 683,\n",
       " 'пользование': 684,\n",
       " 'код': 685,\n",
       " 'нормальный': 686,\n",
       " 'выплата': 687,\n",
       " 'транзакция': 688,\n",
       " 'соответственно': 689,\n",
       " 'совершить': 690,\n",
       " 'выгодный': 691,\n",
       " 'подтверждение': 692,\n",
       " 'письменный': 693,\n",
       " '12': 694,\n",
       " 'совершенно': 695,\n",
       " 'план': 696,\n",
       " 'устраивать': 697,\n",
       " 'разбираться': 698,\n",
       " 'руб.': 699,\n",
       " 'проспект': 700,\n",
       " 'использование': 701,\n",
       " '2015': 702,\n",
       " 'мол': 703,\n",
       " 'крайне': 704,\n",
       " 'домой': 705,\n",
       " 'ввести': 706,\n",
       " 'стоимость': 707,\n",
       " 'доход': 708,\n",
       " 'зачисление': 709,\n",
       " 'подходить': 710,\n",
       " 'посещение': 711,\n",
       " 'закрывать': 712,\n",
       " 'какой-либо': 713,\n",
       " 'автокредит': 714,\n",
       " '50': 715,\n",
       " 'мнение': 716,\n",
       " 'удивление': 717,\n",
       " 'встреча': 718,\n",
       " 'благодаря': 719,\n",
       " 'желать': 720,\n",
       " 'продолжать': 721,\n",
       " 'выше': 722,\n",
       " 'тратить': 723,\n",
       " 'прошлый': 724,\n",
       " 'понедельник': 725,\n",
       " 'визит': 726,\n",
       " 'долгий': 727,\n",
       " 'перевыпустить': 728,\n",
       " 'админ': 729,\n",
       " 'проводить': 730,\n",
       " 'проверка': 731,\n",
       " 'заверить': 732,\n",
       " 'просрочить': 733,\n",
       " 'рядом': 734,\n",
       " 'платёжный': 735,\n",
       " 'график': 736,\n",
       " 'согласно': 737,\n",
       " 'тип': 738,\n",
       " 'пароль': 739,\n",
       " 'якобы': 740,\n",
       " 'никак': 741,\n",
       " 'случиться': 742,\n",
       " 'заявить': 743,\n",
       " '21': 744,\n",
       " 'операционистка': 745,\n",
       " 'согласие': 746,\n",
       " 'приложение': 747,\n",
       " 'услышать': 748,\n",
       " 'ребёнок': 749,\n",
       " 'наличные': 750,\n",
       " 'абсолютно': 751,\n",
       " 'зарегистрировать': 752,\n",
       " '40': 753,\n",
       " 'принцип': 754,\n",
       " 'задать': 755,\n",
       " 'предупредить': 756,\n",
       " 'направить': 757,\n",
       " 'начисление': 758,\n",
       " 'переводить': 759,\n",
       " 'обычный': 760,\n",
       " 'поблагодарить': 761,\n",
       " 'привести': 762,\n",
       " 'нормально': 763,\n",
       " 'попробовать': 764,\n",
       " 'вполне': 765,\n",
       " 'выполнить': 766,\n",
       " 'баланс': 767,\n",
       " 'подписывать': 768,\n",
       " '25': 769,\n",
       " 'полгода': 770,\n",
       " 'валютный': 771,\n",
       " 'держать': 772,\n",
       " 'настоящий': 773,\n",
       " 'ходить': 774,\n",
       " 'обязательно': 775,\n",
       " 'доступ': 776,\n",
       " '2013': 777,\n",
       " '11': 778,\n",
       " 'где-то': 779,\n",
       " 'состояние': 780,\n",
       " 'взнос': 781,\n",
       " 'внимательный': 782,\n",
       " 'вместе': 783,\n",
       " 'спокойно': 784,\n",
       " 'коллега': 785,\n",
       " 'многий': 786,\n",
       " 'произвести': 787,\n",
       " 'вынудить': 788,\n",
       " 'регистрация': 789,\n",
       " 'буквально': 790,\n",
       " '14': 791,\n",
       " 'мкб': 792,\n",
       " 'подача': 793,\n",
       " 'предоставлять': 794,\n",
       " 'описать': 795,\n",
       " 'расчёт': 796,\n",
       " 'пояснить': 797,\n",
       " 'контактный': 798,\n",
       " 'слышать': 799,\n",
       " 'пополнить': 800,\n",
       " 'доп': 801,\n",
       " 'список': 802,\n",
       " 'точка': 803,\n",
       " 'исправить': 804,\n",
       " 'ооо': 805,\n",
       " 'понадобиться': 806,\n",
       " 'отказываться': 807,\n",
       " 'негативный': 808,\n",
       " 'прочитать': 809,\n",
       " 'обратно': 810,\n",
       " 'заходить': 811,\n",
       " 'отправлять': 812,\n",
       " 'конкретный': 813,\n",
       " 'решаться': 814,\n",
       " 'извинение': 815,\n",
       " 'обязательство': 816,\n",
       " 'мама': 817,\n",
       " 'суббота': 818,\n",
       " '500': 819,\n",
       " 'елена': 820,\n",
       " 'постоянный': 821,\n",
       " 'мдм': 822,\n",
       " 'значит': 823,\n",
       " 'полис': 824,\n",
       " 'плата': 825,\n",
       " 'кодовый': 826,\n",
       " 'правильно': 827,\n",
       " 'иб': 828,\n",
       " '18': 829,\n",
       " 'куча': 830,\n",
       " 'помогать': 831,\n",
       " 'принести': 832,\n",
       " 'вход': 833,\n",
       " 'способ': 834,\n",
       " 'вывод': 835,\n",
       " 'рассрочка': 836,\n",
       " 'распечатать': 837,\n",
       " 'минимум': 838,\n",
       " 'оба': 839,\n",
       " 'нерв': 840,\n",
       " 'подписание': 841,\n",
       " 'утром': 842,\n",
       " 'платный': 843,\n",
       " 'почему-то': 844,\n",
       " 'компьютер': 845,\n",
       " 'профессиональный': 846,\n",
       " 'мелочь': 847,\n",
       " 'ольга': 848,\n",
       " 'попытаться': 849,\n",
       " 'рассматривать': 850,\n",
       " 'приезжать': 851,\n",
       " 'разговаривать': 852,\n",
       " 'граница': 853,\n",
       " 'столкнуться': 854,\n",
       " 'прямо': 855,\n",
       " 'показать': 856,\n",
       " 'проверять': 857,\n",
       " 'мина': 858,\n",
       " 'окончание': 859,\n",
       " 'сильно': 860,\n",
       " 'узнавать': 861,\n",
       " 'уточнять': 862,\n",
       " 'официальный': 863,\n",
       " 'центральный': 864,\n",
       " 'оно': 865,\n",
       " 'относиться': 866,\n",
       " 'реклама': 867,\n",
       " 'вновь': 868,\n",
       " 'супруг': 869,\n",
       " 'грамотный': 870,\n",
       " 'послать': 871,\n",
       " 'компетентный': 872,\n",
       " 'обратить': 873,\n",
       " 'альфа-клик': 874,\n",
       " 'собственно': 875,\n",
       " 'пятница': 876,\n",
       " 'вина': 877,\n",
       " 'заполнять': 878,\n",
       " 'называть': 879,\n",
       " 'объяснение': 880,\n",
       " 'планировать': 881,\n",
       " 'удивлённый': 882,\n",
       " 'успешно': 883,\n",
       " 'александр': 884,\n",
       " 'понимание': 885,\n",
       " 'учёт': 886,\n",
       " 'страна': 887,\n",
       " 'пусть': 888,\n",
       " '24': 889,\n",
       " 'оперативность': 890,\n",
       " 'соответствовать': 891,\n",
       " 'екатерина': 892,\n",
       " 'оперативный': 893,\n",
       " 'отпуск': 894,\n",
       " 'поменять': 895,\n",
       " 'замечательный': 896,\n",
       " '—': 897,\n",
       " 'иной': 898,\n",
       " 'смена': 899,\n",
       " '3-й': 900,\n",
       " 'заёмщик': 901,\n",
       " 'советовать': 902,\n",
       " 'наталья': 903,\n",
       " 'изменить': 904,\n",
       " 'повторно': 905,\n",
       " 'абсолют': 906,\n",
       " 'качественный': 907,\n",
       " 'радовать': 908,\n",
       " 'приём': 909,\n",
       " 'глаз': 910,\n",
       " 'менять': 911,\n",
       " '45': 912,\n",
       " 'вкладчик': 913,\n",
       " 'юридический': 914,\n",
       " 'девочка': 915,\n",
       " 'улица': 916,\n",
       " 'подход': 917,\n",
       " 'подтверждать': 918,\n",
       " 'метро': 919,\n",
       " 'скорее': 920,\n",
       " '2-й': 921,\n",
       " 'сила': 922,\n",
       " 'подробный': 923,\n",
       " 'откуда': 924,\n",
       " 'интересовать': 925,\n",
       " 'птс': 926,\n",
       " 'квитанция': 927,\n",
       " 'уходить': 928,\n",
       " 'ирина': 929,\n",
       " 'определённый': 930,\n",
       " 'доброжелательный': 931,\n",
       " 'покупать': 932,\n",
       " 'неоднократно': 933,\n",
       " 'семья': 934,\n",
       " 'совет': 935,\n",
       " 'таки': 936,\n",
       " 'многие': 937,\n",
       " 'хватать': 938,\n",
       " 'копейка': 939,\n",
       " 'зал': 940,\n",
       " 'call-центр': 941,\n",
       " 'автомобиль': 942,\n",
       " 'юлия': 943,\n",
       " 'назначить': 944,\n",
       " 'полчаса': 945,\n",
       " 'санкт-петербург': 946,\n",
       " 'ситибанк': 947,\n",
       " 'рублёвый': 948,\n",
       " 'хоум': 949,\n",
       " 'подарок': 950,\n",
       " 'татьяна': 951,\n",
       " 'низкий': 952,\n",
       " 'встречать': 953,\n",
       " 'заказывать': 954,\n",
       " 'доступный': 955,\n",
       " '16': 956,\n",
       " 'продавец': 957,\n",
       " 'видно': 958,\n",
       " 'сталкиваться': 959,\n",
       " 'клиентский': 960,\n",
       " 'взыскание': 961,\n",
       " 'требоваться': 962,\n",
       " 'некий': 963,\n",
       " 'подключение': 964,\n",
       " 'статус': 965,\n",
       " 'оао': 966,\n",
       " 'рейтинг': 967,\n",
       " 'проект': 968,\n",
       " 'билет': 969,\n",
       " 'важный': 970,\n",
       " 'неприятный': 971,\n",
       " 'отменить': 972,\n",
       " 'перечислить': 973,\n",
       " 'надежда': 974,\n",
       " 'смысл': 975,\n",
       " 'пригласить': 976,\n",
       " 'увеличить': 977,\n",
       " 'поделиться': 978,\n",
       " '....': 979,\n",
       " 'народ': 980,\n",
       " 'защита': 981,\n",
       " 'дождаться': 982,\n",
       " 'цб': 983,\n",
       " 'иначе': 984,\n",
       " 'везде': 985,\n",
       " 'установить': 986,\n",
       " 'отлично': 987,\n",
       " 'вести': 988,\n",
       " 'интересно': 989,\n",
       " 'приветливый': 990,\n",
       " 'каско': 991,\n",
       " 'поездка': 992,\n",
       " 'пополнять': 993,\n",
       " 'голос': 994,\n",
       " '13': 995,\n",
       " 'задавать': 996,\n",
       " 'сравнение': 997,\n",
       " 'индивидуальный': 998,\n",
       " 'пообещать': 999,\n",
       " 'заключить': 1000,\n",
       " 'внутренний': 1001,\n",
       " ...}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "word_to_index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tjgxtx4ThPiE"
   },
   "source": [
    "Функция для преобразования списка слов в список кодов"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "id": "aaFcC87ifsjO"
   },
   "outputs": [],
   "source": [
    "def text_to_sequence(txt, word_to_index):\n",
    "    seq = []\n",
    "    for word in txt:\n",
    "        index = word_to_index.get(word, 1) # 1 означает неизвестное слово\n",
    "        # Неизвестные слова не добавляем в выходную последовательность\n",
    "        if index != 1:\n",
    "            seq.append(index)\n",
    "    return seq"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9WbPzZwCjIgK"
   },
   "source": [
    "Преобразуем все тексты в последовательность кодов слов"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "id": "t92mWXLVjQof"
   },
   "outputs": [],
   "source": [
    "banks['Sequences'] = banks.apply(lambda row: text_to_sequence(row['Preprocessed_texts'], word_to_index), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 629
    },
    "id": "y10HHUPGkC5z",
    "outputId": "06a8caf9-a244-41fc-d23e-2544ba52af60"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>text</th>\n",
       "      <th>label</th>\n",
       "      <th>Preprocessed_texts</th>\n",
       "      <th>Sequences</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>В Альфа-Банке работает замечательная девушка -...</td>\n",
       "      <td>1</td>\n",
       "      <td>[альфа-банк, работать, замечательный, девушка,...</td>\n",
       "      <td>[61, 44, 896, 76, 194, 1842, 344, 2685, 396, 1...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Оформляя рассрочку в м. Видео в меге тёплый ст...</td>\n",
       "      <td>0</td>\n",
       "      <td>[оформлять, рассрочка, м., видео, мег, тёплый,...</td>\n",
       "      <td>[254, 836, 1155, 3189, 3865, 2956, 7316, 163, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Очень порадовала оперативность работы в банке....</td>\n",
       "      <td>1</td>\n",
       "      <td>[очень, порадовать, оперативность, работа, бан...</td>\n",
       "      <td>[20, 1033, 890, 30, 2, 461, 175, 3, 613, 1743,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Имела неосторожность оформить потреб. кредит в...</td>\n",
       "      <td>0</td>\n",
       "      <td>[иметь, неосторожность, оформить, потреба, кре...</td>\n",
       "      <td>[113, 4790, 70, 2343, 9, 61, 20, 2639, 1264, 3...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Небольшая предыстория: Нашел на сайте MDM банк...</td>\n",
       "      <td>0</td>\n",
       "      <td>[небольшой, предыстория, найти, сайт, mdm, бан...</td>\n",
       "      <td>[405, 3824, 262, 85, 2, 633, 3, 4866, 2, 283, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13994</th>\n",
       "      <td>О высокой надёжности МКБ, порядочности и добро...</td>\n",
       "      <td>1</td>\n",
       "      <td>[высокий, надёжность, мкб, порядочность, добро...</td>\n",
       "      <td>[388, 2296, 792, 5000, 8128, 7, 3073, 120, 427...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13995</th>\n",
       "      <td>Обслуживаюсь в офисе на Чернореченской 42а, ка...</td>\n",
       "      <td>1</td>\n",
       "      <td>[обслуживаться, офис, чернореченский, 42а, физ...</td>\n",
       "      <td>[349, 26, 9465, 2126, 191, 16, 26, 134, 64, 11...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13996</th>\n",
       "      <td>Попала сегодня в очень неприятную ситуацию. Ре...</td>\n",
       "      <td>1</td>\n",
       "      <td>[попасть, сегодня, очень, неприятный, ситуация...</td>\n",
       "      <td>[502, 104, 20, 971, 53, 39, 213, 221, 3, 47, 3...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13997</th>\n",
       "      <td>Добрый день! Давно являюсь клиентом банка Русс...</td>\n",
       "      <td>1</td>\n",
       "      <td>[добрый, день, давно, являться, клиент, банк, ...</td>\n",
       "      <td>[173, 6, 384, 84, 13, 2, 659, 676, 113, 330, 3...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13998</th>\n",
       "      <td>Сначала было все банально. Взял в кредит mp3 п...</td>\n",
       "      <td>0</td>\n",
       "      <td>[сначала, всё, банально, взять, кредит, mp3, п...</td>\n",
       "      <td>[425, 5, 4084, 121, 9, 446, 2012, 192, 645, 39...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>13999 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    text  label  \\\n",
       "id                                                                \n",
       "0      В Альфа-Банке работает замечательная девушка -...      1   \n",
       "1      Оформляя рассрочку в м. Видео в меге тёплый ст...      0   \n",
       "2      Очень порадовала оперативность работы в банке....      1   \n",
       "3      Имела неосторожность оформить потреб. кредит в...      0   \n",
       "4      Небольшая предыстория: Нашел на сайте MDM банк...      0   \n",
       "...                                                  ...    ...   \n",
       "13994  О высокой надёжности МКБ, порядочности и добро...      1   \n",
       "13995  Обслуживаюсь в офисе на Чернореченской 42а, ка...      1   \n",
       "13996  Попала сегодня в очень неприятную ситуацию. Ре...      1   \n",
       "13997  Добрый день! Давно являюсь клиентом банка Русс...      1   \n",
       "13998  Сначала было все банально. Взял в кредит mp3 п...      0   \n",
       "\n",
       "                                      Preprocessed_texts  \\\n",
       "id                                                         \n",
       "0      [альфа-банк, работать, замечательный, девушка,...   \n",
       "1      [оформлять, рассрочка, м., видео, мег, тёплый,...   \n",
       "2      [очень, порадовать, оперативность, работа, бан...   \n",
       "3      [иметь, неосторожность, оформить, потреба, кре...   \n",
       "4      [небольшой, предыстория, найти, сайт, mdm, бан...   \n",
       "...                                                  ...   \n",
       "13994  [высокий, надёжность, мкб, порядочность, добро...   \n",
       "13995  [обслуживаться, офис, чернореченский, 42а, физ...   \n",
       "13996  [попасть, сегодня, очень, неприятный, ситуация...   \n",
       "13997  [добрый, день, давно, являться, клиент, банк, ...   \n",
       "13998  [сначала, всё, банально, взять, кредит, mp3, п...   \n",
       "\n",
       "                                               Sequences  \n",
       "id                                                        \n",
       "0      [61, 44, 896, 76, 194, 1842, 344, 2685, 396, 1...  \n",
       "1      [254, 836, 1155, 3189, 3865, 2956, 7316, 163, ...  \n",
       "2      [20, 1033, 890, 30, 2, 461, 175, 3, 613, 1743,...  \n",
       "3      [113, 4790, 70, 2343, 9, 61, 20, 2639, 1264, 3...  \n",
       "4      [405, 3824, 262, 85, 2, 633, 3, 4866, 2, 283, ...  \n",
       "...                                                  ...  \n",
       "13994  [388, 2296, 792, 5000, 8128, 7, 3073, 120, 427...  \n",
       "13995  [349, 26, 9465, 2126, 191, 16, 26, 134, 64, 11...  \n",
       "13996  [502, 104, 20, 971, 53, 39, 213, 221, 3, 47, 3...  \n",
       "13997  [173, 6, 384, 84, 13, 2, 659, 676, 113, 330, 3...  \n",
       "13998  [425, 5, 4084, 121, 9, 446, 2012, 192, 645, 39...  \n",
       "\n",
       "[13999 rows x 4 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "banks"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tSo9Q59pQEVm"
   },
   "source": [
    "## Готовим данные для обучения"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FrD9el8pQYEJ"
   },
   "source": [
    "### Выделяем данные для обучения и тестирования"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "id": "XlaVMvgGQdZU"
   },
   "outputs": [],
   "source": [
    "train, test = train_test_split(banks, test_size=0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 629
    },
    "id": "8NJOp_GAQ_El",
    "outputId": "cc6de7b8-0f26-429e-d16e-7512a5e3f078"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>text</th>\n",
       "      <th>label</th>\n",
       "      <th>Preprocessed_texts</th>\n",
       "      <th>Sequences</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>9683</th>\n",
       "      <td>Более года являюсь клиентом ПАО АКБ «АВАНГАРД»...</td>\n",
       "      <td>1</td>\n",
       "      <td>[год, являться, клиент, пао, акб, авангард, от...</td>\n",
       "      <td>[16, 84, 13, 1298, 3282, 249, 1313, 2, 656, 10...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13493</th>\n",
       "      <td>Изначально был клиентом МоскомПриватбанка. Был...</td>\n",
       "      <td>0</td>\n",
       "      <td>[изначально, клиент, москомприватбанк, доволен...</td>\n",
       "      <td>[1103, 13, 1024, 3194, 1321, 13, 232, 65, 16, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12623</th>\n",
       "      <td>Заказывал карту молодежная дебетовая visa clas...</td>\n",
       "      <td>1</td>\n",
       "      <td>[заказывать, карта, молодёжный, дебетовый, vis...</td>\n",
       "      <td>[954, 3, 5493, 205, 613, 1743, 1037, 117, 100,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4652</th>\n",
       "      <td>Клиентом БИН-Банка был давно, но что-то жаркий...</td>\n",
       "      <td>0</td>\n",
       "      <td>[клиент, бин-банк, давно, что-то, жаркий, авгу...</td>\n",
       "      <td>[13, 2383, 384, 227, 8827, 447, 1233, 9443, 35...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8735</th>\n",
       "      <td>Я являюсь клиентом банка «Русский Стандарт» уж...</td>\n",
       "      <td>1</td>\n",
       "      <td>[являться, клиент, банк, русский, стандарт, 3,...</td>\n",
       "      <td>[84, 13, 2, 659, 676, 117, 16, 145, 578, 386, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9576</th>\n",
       "      <td>Здравствуйте! Я очень недоволен обслуживанием ...</td>\n",
       "      <td>0</td>\n",
       "      <td>[здравствуйте, очень, недовольный, обслуживани...</td>\n",
       "      <td>[510, 20, 1526, 41, 43, 2, 337, 43, 2, 8, 14, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1771</th>\n",
       "      <td>Выражаю благодарность сотрудникам отделения Фи...</td>\n",
       "      <td>1</td>\n",
       "      <td>[выражать, благодарность, сотрудник, отделение...</td>\n",
       "      <td>[1179, 270, 7, 12, 8355, 1732, 7025, 2025, 517...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>384</th>\n",
       "      <td>23.09.2015г. вышел приказ МинФина №148Н, основ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[23.09.2015г, выйти, приказ, минфин, №148н, ос...</td>\n",
       "      <td>[551, 3220, 1035, 440, 8, 3789, 922, 8002, 308...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8885</th>\n",
       "      <td>Являюсь клиентом банка давно, все кредиты выпл...</td>\n",
       "      <td>0</td>\n",
       "      <td>[являться, клиент, банк, давно, всё, кредит, в...</td>\n",
       "      <td>[84, 13, 2, 384, 5, 9, 63, 47, 280, 2, 152, 31...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1153</th>\n",
       "      <td>Была проблема с зачислением денежных средств н...</td>\n",
       "      <td>1</td>\n",
       "      <td>[проблема, зачисление, денежный, средство, бан...</td>\n",
       "      <td>[27, 709, 188, 60, 211, 3, 1590, 2, 391, 61, 2...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>11199 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    text  label  \\\n",
       "id                                                                \n",
       "9683   Более года являюсь клиентом ПАО АКБ «АВАНГАРД»...      1   \n",
       "13493  Изначально был клиентом МоскомПриватбанка. Был...      0   \n",
       "12623  Заказывал карту молодежная дебетовая visa clas...      1   \n",
       "4652   Клиентом БИН-Банка был давно, но что-то жаркий...      0   \n",
       "8735   Я являюсь клиентом банка «Русский Стандарт» уж...      1   \n",
       "...                                                  ...    ...   \n",
       "9576   Здравствуйте! Я очень недоволен обслуживанием ...      0   \n",
       "1771   Выражаю благодарность сотрудникам отделения Фи...      1   \n",
       "384    23.09.2015г. вышел приказ МинФина №148Н, основ...      1   \n",
       "8885   Являюсь клиентом банка давно, все кредиты выпл...      0   \n",
       "1153   Была проблема с зачислением денежных средств н...      1   \n",
       "\n",
       "                                      Preprocessed_texts  \\\n",
       "id                                                         \n",
       "9683   [год, являться, клиент, пао, акб, авангард, от...   \n",
       "13493  [изначально, клиент, москомприватбанк, доволен...   \n",
       "12623  [заказывать, карта, молодёжный, дебетовый, vis...   \n",
       "4652   [клиент, бин-банк, давно, что-то, жаркий, авгу...   \n",
       "8735   [являться, клиент, банк, русский, стандарт, 3,...   \n",
       "...                                                  ...   \n",
       "9576   [здравствуйте, очень, недовольный, обслуживани...   \n",
       "1771   [выражать, благодарность, сотрудник, отделение...   \n",
       "384    [23.09.2015г, выйти, приказ, минфин, №148н, ос...   \n",
       "8885   [являться, клиент, банк, давно, всё, кредит, в...   \n",
       "1153   [проблема, зачисление, денежный, средство, бан...   \n",
       "\n",
       "                                               Sequences  \n",
       "id                                                        \n",
       "9683   [16, 84, 13, 1298, 3282, 249, 1313, 2, 656, 10...  \n",
       "13493  [1103, 13, 1024, 3194, 1321, 13, 232, 65, 16, ...  \n",
       "12623  [954, 3, 5493, 205, 613, 1743, 1037, 117, 100,...  \n",
       "4652   [13, 2383, 384, 227, 8827, 447, 1233, 9443, 35...  \n",
       "8735   [84, 13, 2, 659, 676, 117, 16, 145, 578, 386, ...  \n",
       "...                                                  ...  \n",
       "9576   [510, 20, 1526, 41, 43, 2, 337, 43, 2, 8, 14, ...  \n",
       "1771   [1179, 270, 7, 12, 8355, 1732, 7025, 2025, 517...  \n",
       "384    [551, 3220, 1035, 440, 8, 3789, 922, 8002, 308...  \n",
       "8885   [84, 13, 2, 384, 5, 9, 63, 47, 280, 2, 152, 31...  \n",
       "1153   [27, 709, 188, 60, 211, 3, 1590, 2, 391, 61, 2...  \n",
       "\n",
       "[11199 rows x 4 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 629
    },
    "id": "CNSudRogRjUL",
    "outputId": "7e246d60-146a-44e8-c18d-38d9662d7486"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>text</th>\n",
       "      <th>label</th>\n",
       "      <th>Preprocessed_texts</th>\n",
       "      <th>Sequences</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3583</th>\n",
       "      <td>Хочу оставить небольшой отзыв о банке, клиенто...</td>\n",
       "      <td>1</td>\n",
       "      <td>[хотеть, оставить, небольшой, отзыв, банк, кли...</td>\n",
       "      <td>[40, 197, 405, 90, 2, 13, 8, 84, 20, 384, 604,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>108</th>\n",
       "      <td>Взяла потребкредит в 2012 - г. Казань, после а...</td>\n",
       "      <td>1</td>\n",
       "      <td>[взять, потребкредить, 2012, г., казань, авток...</td>\n",
       "      <td>[121, 5286, 1017, 120, 2671, 714, 247, 16, 527...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1550</th>\n",
       "      <td>Добрый вечер. Просматриваю отзывы по банку, и ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[добрый, вечер, просматривать, отзыв, банк, пр...</td>\n",
       "      <td>[173, 671, 3201, 90, 2, 855, 4880, 84, 13, 2, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9334</th>\n",
       "      <td>ДА... просто нет слов. Консультанты этого банк...</td>\n",
       "      <td>0</td>\n",
       "      <td>[просто, слово, консультант, это, банк, позвон...</td>\n",
       "      <td>[58, 150, 577, 4, 2, 34, 605, 77, 3, 5579, 584...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10325</th>\n",
       "      <td>Я являюсь Генеральным директором ООО РоИл, наш...</td>\n",
       "      <td>1</td>\n",
       "      <td>[являться, генеральный, директор, ооо, роить, ...</td>\n",
       "      <td>[84, 2876, 1104, 805, 126, 383, 231, 120, 308,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6324</th>\n",
       "      <td>Являюсь клиентом банка с 2004 года. Два дня не...</td>\n",
       "      <td>0</td>\n",
       "      <td>[являться, клиент, банк, 2004, год, день, неко...</td>\n",
       "      <td>[84, 13, 2, 3110, 16, 6, 2292, 1621, 68, 3011,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5312</th>\n",
       "      <td>Сегодня оформил кредит в банке. Обслуживание о...</td>\n",
       "      <td>1</td>\n",
       "      <td>[сегодня, оформить, кредит, банк, обслуживание...</td>\n",
       "      <td>[104, 70, 9, 2, 41, 20, 460, 5, 70, 20, 122, 1...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8191</th>\n",
       "      <td>У меня был открыт расходный вклад в Европлан б...</td>\n",
       "      <td>0</td>\n",
       "      <td>[открыть, расходный, вклад, европлан, банк, пе...</td>\n",
       "      <td>[115, 2507, 48, 3247, 2, 273, 3051, 615, 7103,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2632</th>\n",
       "      <td>История началась как и у всех: увидел рекламу,...</td>\n",
       "      <td>0</td>\n",
       "      <td>[история, начаться, весь, увидеть, реклама, за...</td>\n",
       "      <td>[161, 401, 21, 354, 867, 317, 62, 830, 49, 830...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5679</th>\n",
       "      <td>Все началось со звонка сотрудника Банка, котор...</td>\n",
       "      <td>0</td>\n",
       "      <td>[всё, начаться, звонок, сотрудник, банк, котор...</td>\n",
       "      <td>[5, 401, 49, 7, 2, 8, 34, 124, 424, 24, 229, 4...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2800 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    text  label  \\\n",
       "id                                                                \n",
       "3583   Хочу оставить небольшой отзыв о банке, клиенто...      1   \n",
       "108    Взяла потребкредит в 2012 - г. Казань, после а...      1   \n",
       "1550   Добрый вечер. Просматриваю отзывы по банку, и ...      1   \n",
       "9334   ДА... просто нет слов. Консультанты этого банк...      0   \n",
       "10325  Я являюсь Генеральным директором ООО РоИл, наш...      1   \n",
       "...                                                  ...    ...   \n",
       "6324   Являюсь клиентом банка с 2004 года. Два дня не...      0   \n",
       "5312   Сегодня оформил кредит в банке. Обслуживание о...      1   \n",
       "8191   У меня был открыт расходный вклад в Европлан б...      0   \n",
       "2632   История началась как и у всех: увидел рекламу,...      0   \n",
       "5679   Все началось со звонка сотрудника Банка, котор...      0   \n",
       "\n",
       "                                      Preprocessed_texts  \\\n",
       "id                                                         \n",
       "3583   [хотеть, оставить, небольшой, отзыв, банк, кли...   \n",
       "108    [взять, потребкредить, 2012, г., казань, авток...   \n",
       "1550   [добрый, вечер, просматривать, отзыв, банк, пр...   \n",
       "9334   [просто, слово, консультант, это, банк, позвон...   \n",
       "10325  [являться, генеральный, директор, ооо, роить, ...   \n",
       "...                                                  ...   \n",
       "6324   [являться, клиент, банк, 2004, год, день, неко...   \n",
       "5312   [сегодня, оформить, кредит, банк, обслуживание...   \n",
       "8191   [открыть, расходный, вклад, европлан, банк, пе...   \n",
       "2632   [история, начаться, весь, увидеть, реклама, за...   \n",
       "5679   [всё, начаться, звонок, сотрудник, банк, котор...   \n",
       "\n",
       "                                               Sequences  \n",
       "id                                                        \n",
       "3583   [40, 197, 405, 90, 2, 13, 8, 84, 20, 384, 604,...  \n",
       "108    [121, 5286, 1017, 120, 2671, 714, 247, 16, 527...  \n",
       "1550   [173, 671, 3201, 90, 2, 855, 4880, 84, 13, 2, ...  \n",
       "9334   [58, 150, 577, 4, 2, 34, 605, 77, 3, 5579, 584...  \n",
       "10325  [84, 2876, 1104, 805, 126, 383, 231, 120, 308,...  \n",
       "...                                                  ...  \n",
       "6324   [84, 13, 2, 3110, 16, 6, 2292, 1621, 68, 3011,...  \n",
       "5312   [104, 70, 9, 2, 41, 20, 460, 5, 70, 20, 122, 1...  \n",
       "8191   [115, 2507, 48, 3247, 2, 273, 3051, 615, 7103,...  \n",
       "2632   [161, 401, 21, 354, 867, 317, 62, 830, 49, 830...  \n",
       "5679   [5, 401, 49, 7, 2, 8, 34, 124, 424, 24, 229, 4...  \n",
       "\n",
       "[2800 rows x 4 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vdin3TyORreE"
   },
   "source": [
    "### Разделяем метки классов и данные для обучения"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zwqYdYujSPIb"
   },
   "source": [
    "Данные для обучения"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "id": "QmVVgp8BRxpZ"
   },
   "outputs": [],
   "source": [
    "x_train_seq = train['Sequences']\n",
    "y_train = train['label']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "0r4qjru0R_Z5",
    "outputId": "30a1d63b-4f6a-49fa-e65f-2c28c74e85c4"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id\n",
       "9683     [16, 84, 13, 1298, 3282, 249, 1313, 2, 656, 10...\n",
       "13493    [1103, 13, 1024, 3194, 1321, 13, 232, 65, 16, ...\n",
       "12623    [954, 3, 5493, 205, 613, 1743, 1037, 117, 100,...\n",
       "4652     [13, 2383, 384, 227, 8827, 447, 1233, 9443, 35...\n",
       "8735     [84, 13, 2, 659, 676, 117, 16, 145, 578, 386, ...\n",
       "                               ...                        \n",
       "9576     [510, 20, 1526, 41, 43, 2, 337, 43, 2, 8, 14, ...\n",
       "1771     [1179, 270, 7, 12, 8355, 1732, 7025, 2025, 517...\n",
       "384      [551, 3220, 1035, 440, 8, 3789, 922, 8002, 308...\n",
       "8885     [84, 13, 2, 384, 5, 9, 63, 47, 280, 2, 152, 31...\n",
       "1153     [27, 709, 188, 60, 211, 3, 1590, 2, 391, 61, 2...\n",
       "Name: Sequences, Length: 11199, dtype: object"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train_seq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "SP5ljjhESDNI",
    "outputId": "671690a9-2780-46c9-e24b-e14bceb17b97"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id\n",
       "9683     1\n",
       "13493    0\n",
       "12623    1\n",
       "4652     0\n",
       "8735     1\n",
       "        ..\n",
       "9576     0\n",
       "1771     1\n",
       "384      1\n",
       "8885     0\n",
       "1153     1\n",
       "Name: label, Length: 11199, dtype: int64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xuG4RvMjSSbY"
   },
   "source": [
    "Данные для тестирования"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "id": "PCJJMYLnSW_n"
   },
   "outputs": [],
   "source": [
    "x_test_seq = test['Sequences']\n",
    "y_test = test['label']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "8SsYE9FPSdTA",
    "outputId": "0384fb3c-8780-4a4b-f750-934e14f1089d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id\n",
       "3583     [40, 197, 405, 90, 2, 13, 8, 84, 20, 384, 604,...\n",
       "108      [121, 5286, 1017, 120, 2671, 714, 247, 16, 527...\n",
       "1550     [173, 671, 3201, 90, 2, 855, 4880, 84, 13, 2, ...\n",
       "9334     [58, 150, 577, 4, 2, 34, 605, 77, 3, 5579, 584...\n",
       "10325    [84, 2876, 1104, 805, 126, 383, 231, 120, 308,...\n",
       "                               ...                        \n",
       "6324     [84, 13, 2, 3110, 16, 6, 2292, 1621, 68, 3011,...\n",
       "5312     [104, 70, 9, 2, 41, 20, 460, 5, 70, 20, 122, 1...\n",
       "8191     [115, 2507, 48, 3247, 2, 273, 3051, 615, 7103,...\n",
       "2632     [161, 401, 21, 354, 867, 317, 62, 830, 49, 830...\n",
       "5679     [5, 401, 49, 7, 2, 8, 34, 124, 424, 24, 229, 4...\n",
       "Name: Sequences, Length: 2800, dtype: object"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test_seq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "w9JqW2WtSfqV",
    "outputId": "3a7893ba-3400-48be-a08b-d66b852a92f2"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id\n",
       "3583     1\n",
       "108      1\n",
       "1550     1\n",
       "9334     0\n",
       "10325    1\n",
       "        ..\n",
       "6324     0\n",
       "5312     1\n",
       "8191     0\n",
       "2632     0\n",
       "5679     0\n",
       "Name: label, Length: 2800, dtype: int64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "LZ5E_sd6X945"
   },
   "source": [
    "## Создаем мешок слов"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "id": "hbPcLZAok_wf"
   },
   "outputs": [],
   "source": [
    "def vectorize_sequences(sequences, dimension=10000):\n",
    "    results = np.zeros((len(sequences), dimension))\n",
    "    for i, sequence in enumerate(sequences):\n",
    "        for index in sequence:\n",
    "            results[i, index] += 1.\n",
    "    return results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "id": "xkMU-sKYl62K"
   },
   "outputs": [],
   "source": [
    "x_train = vectorize_sequences(x_train_seq, max_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "id": "V2zUvuwGSrHI"
   },
   "outputs": [],
   "source": [
    "x_test = vectorize_sequences(x_test_seq, max_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "EY3r6KMdm4ce",
    "outputId": "07e270b1-b447-4101-84bb-e4c2c98c6a00"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 4., 0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 2., 0., 0., 1.,\n",
       "       0., 1., 1., 1., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 2., 1., 0.,\n",
       "       0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 2., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 1.,\n",
       "       0., 1., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train[0][:100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "9XF0zMIqm9dC",
    "outputId": "29a8df0e-bcb7-4a44-bac1-d34cf0331413"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10000"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(x_train[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2JjAx-4iS14d"
   },
   "source": [
    "## Создаем модель машинного обучения"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "id": "5riQenkMdIz3"
   },
   "outputs": [],
   "source": [
    "lr = LogisticRegression(random_state=random_state, max_iter=500)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "VNiz55OBTKnV"
   },
   "source": [
    "## Обучаем модель машинного обучения"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 75
    },
    "id": "cnpiCQ2JdVwR",
    "outputId": "8062af00-64c8-4840-ee56-7cbb0f7bffe3"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(max_iter=500, random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(max_iter=500, random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LogisticRegression(max_iter=500, random_state=42)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "1pZ4iYXAcSnE"
   },
   "source": [
    "## Оцениваем качество обучения на тестовом наборе данных"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Kf5pEuAGcojj"
   },
   "source": [
    "Определяем долю правильных ответов (accuracy) на тестовом наборе данных"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "7dAGLK-_d6Ut",
    "outputId": "62eec960-7cd0-4d4f-8926-2c05448f6537"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9446428571428571"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr.score(x_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5HNdGjOuc0P7"
   },
   "source": [
    "## Применяем модель для определения тональности отзыва на банк"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pFr1P1dcc_Tf"
   },
   "source": [
    "**Позитивный отзыв**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "id": "jSXOhJvRczmQ"
   },
   "outputs": [],
   "source": [
    "positive_text = \"\"\"Брал кредит в Мегабанке на автомобиль. Выдали за один день. Никаких скрытых комиссий и переплат.\n",
    "У банка удобное мобильное приложение, через которое можно быстро отправить ежемесячный платеж.\n",
    "Досрочное гасить начал через три месяца. Я доволен оперативностью и удобством. Огромное спасибо!\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "QJ4DcyaQgHuf"
   },
   "source": [
    "Подготовка текста к обработке"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "id": "xWVnIw5We-vr"
   },
   "outputs": [],
   "source": [
    "positive_preprocessed_text = preprocess(positive_text, stop_words, punctuation_marks, morph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "1m5v4pKpfOCb",
    "outputId": "ac7ce1ae-42fb-460a-e29f-dcdab21242e3"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['брать',\n",
       " 'кредит',\n",
       " 'мегабанк',\n",
       " 'автомобиль',\n",
       " 'выдать',\n",
       " 'день',\n",
       " 'никакой',\n",
       " 'скрытый',\n",
       " 'комиссия',\n",
       " 'переплата',\n",
       " 'банк',\n",
       " 'удобный',\n",
       " 'мобильный',\n",
       " 'приложение',\n",
       " 'который',\n",
       " 'быстро',\n",
       " 'отправить',\n",
       " 'ежемесячный',\n",
       " 'платёж',\n",
       " 'досрочный',\n",
       " 'гасить',\n",
       " 'начать',\n",
       " 'месяц',\n",
       " 'довольный',\n",
       " 'оперативность',\n",
       " 'удобство',\n",
       " 'огромный',\n",
       " 'спасибо']"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "positive_preprocessed_text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "id": "b2RY-EDVfUy_"
   },
   "outputs": [],
   "source": [
    "positive_seq = text_to_sequence(positive_preprocessed_text, word_to_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "-XHmvBhffiou",
    "outputId": "6eea88b3-9836-4bce-f3cb-666ab85b220c"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[162,\n",
       " 9,\n",
       " 942,\n",
       " 129,\n",
       " 6,\n",
       " 79,\n",
       " 1866,\n",
       " 78,\n",
       " 1007,\n",
       " 2,\n",
       " 274,\n",
       " 292,\n",
       " 747,\n",
       " 8,\n",
       " 122,\n",
       " 195,\n",
       " 475,\n",
       " 31,\n",
       " 345,\n",
       " 1399,\n",
       " 266,\n",
       " 35,\n",
       " 286,\n",
       " 890,\n",
       " 1293,\n",
       " 299,\n",
       " 73]"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "positive_seq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "id": "bSAf7HXMfwVC"
   },
   "outputs": [],
   "source": [
    "positive_bow = vectorize_sequences([positive_seq], max_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "FDJoCeaaf-OY",
    "outputId": "796a6f63-ceb1-49ae-dfc8-0a278105e330"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 1., 0., 0., 0., 1., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,\n",
       "       0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "positive_bow[0][0:100]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "n5K4rGNagLih"
   },
   "source": [
    "Выполняем распознавание"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "id": "BhRAVQTUgPGX"
   },
   "outputs": [],
   "source": [
    "result = lr.predict(positive_bow)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "BRGoBtDBgUyM",
    "outputId": "6eec1291-93e4-4416-d809-d66e759ed15e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1], dtype=int64)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "3K6awLQigq-D"
   },
   "source": [
    "**Негативный отзыв**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "id": "ZqUkDs21guEN"
   },
   "outputs": [],
   "source": [
    "negative_text = \"\"\"Взял кредит в ТакСебеБанке на автомобиль. В договор включили обязательный контракт\n",
    "на помощь на дороге, который мне не нужен. Узнал об этом только во время подписания договора, иначе бы отказался.\n",
    "Альтернативы была страхование жизни, но мне это даже не предложили. Скорее всего, менеджер продвигает\n",
    "продажи услуг этой компании в ущерб интересов клиента. Как минимум, непорядочно и непрофессионально.\n",
    "У банка ужасное мобильное приложение, из-за которого с меня взяли штраф 10 тыс.руб. По требованиям\n",
    "банка после покупки автомобиля в приложении нужно загрузить ПТС. Я загрузил и проверил, что ПТС в приложении есть.\n",
    "Но через некоторое время ПТС из приложения пропал и с меня взяли штраф. Никому не рекомендую связываться с ТакСебеБанком.\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "id": "AiBvb3Qqh8ep"
   },
   "outputs": [],
   "source": [
    "negative_preprocessed_text = preprocess(negative_text, stop_words, punctuation_marks, morph)\n",
    "negative_seq = text_to_sequence(negative_preprocessed_text, word_to_index)\n",
    "negative_bow = vectorize_sequences([negative_seq], max_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "CsrzbhKZnISz",
    "outputId": "4048b175-931a-4c94-b020-6239eed166c2"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 2., 0., 2., 0., 0., 0., 2., 1., 0., 0., 0., 1., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 1., 2., 0., 0., 0., 0., 0., 0., 2., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "negative_bow[0][0:100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "id": "576AFyxQii_S"
   },
   "outputs": [],
   "source": [
    "result = lr.predict(negative_bow)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "o-c25tMrioT7",
    "outputId": "8548d6c5-ee0a-4655-b05a-d04658c69de8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0], dtype=int64)"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "id": "mo2-L3cQj4Ho"
   },
   "outputs": [],
   "source": [
    "result = lr.predict_proba(negative_bow)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Mme2NEeAj7ZC",
    "outputId": "7825d57c-e99e-4964-dda9-38ab8f15da9d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.99519355, 0.00480645]])"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gYoy0ihb6LbU"
   },
   "source": [
    "## Распознавание тестового набора данных"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5ivAzEXp6Par"
   },
   "source": [
    "Загружаем тестовый набор данных"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "T2mKScq96O08",
    "outputId": "09620b04-bdec-4fde-817a-68e74c6fda9a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100% [........................................................................] 17388386 / 17388386"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'test.csv'"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wget.download('https://www.dropbox.com/scl/fi/jicatwyt7lnzyhlykc79l/test.csv?rlkey=btnagli0qjkdtnc8r1qtmx3lm&dl=1',\n",
    "              'test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "id": "XLna7Dzy73iO"
   },
   "outputs": [],
   "source": [
    "test = pd.read_csv('test.csv', index_col='idx', sep='\\t');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 455
    },
    "id": "dFi5OBTbXyuO",
    "outputId": "6286ecbe-2298-4b25-d371-95f06ea5d8c3",
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Text</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>idx</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>13999</th>\n",
       "      <td>Замечательная история об открытии счета в банк...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14000</th>\n",
       "      <td>23.07.14г. я досрочно внес сумму, указанную оп...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14001</th>\n",
       "      <td>Была задолженность по кредитной карте. Банк по...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14002</th>\n",
       "      <td>Срочно понадобилась определенная денежная сумм...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14003</th>\n",
       "      <td>Здравствуйте. В местном отделении Бинбанка г. ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19994</th>\n",
       "      <td>Уважаемые представители Русфинанс Банка! Прошу...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>04 июня сняли с дебетовой карты банка 10 000 T...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>В апреле решил я купить шуруповерт. Посмотрел ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>Недавно взял потребкредит в этом банке. Все че...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>Продолжение отзыва АльфаСтрахование, защищённа...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6000 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    Text\n",
       "idx                                                     \n",
       "13999  Замечательная история об открытии счета в банк...\n",
       "14000  23.07.14г. я досрочно внес сумму, указанную оп...\n",
       "14001  Была задолженность по кредитной карте. Банк по...\n",
       "14002  Срочно понадобилась определенная денежная сумм...\n",
       "14003  Здравствуйте. В местном отделении Бинбанка г. ...\n",
       "...                                                  ...\n",
       "19994  Уважаемые представители Русфинанс Банка! Прошу...\n",
       "19995  04 июня сняли с дебетовой карты банка 10 000 T...\n",
       "19996  В апреле решил я купить шуруповерт. Посмотрел ...\n",
       "19997  Недавно взял потребкредит в этом банке. Все че...\n",
       "19998  Продолжение отзыва АльфаСтрахование, защищённа...\n",
       "\n",
       "[6000 rows x 1 columns]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pW-x7zk48VC-"
   },
   "source": [
    "Предварительная обработка текстов отзывов из тестового набора данных"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "id": "2GUYNBoo8kMl"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "97c210c722c2493695f79eb03afbf0fa",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/6000 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test['Preprocessed_texts'] = test.progress_apply(lambda row: preprocess(row['Text'], stop_words, punctuation_marks, morph), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "colab": {
     "background_save": true
    },
    "id": "UcWMeLLkX10t",
    "outputId": "a47873f6-580e-4d30-a73b-29ee5ee9bf17"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Text</th>\n",
       "      <th>Preprocessed_texts</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>idx</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>13999</th>\n",
       "      <td>Замечательная история об открытии счета в банк...</td>\n",
       "      <td>[замечательный, история, открытие, счёт, банк,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14000</th>\n",
       "      <td>23.07.14г. я досрочно внес сумму, указанную оп...</td>\n",
       "      <td>[23.07.14г, досрочно, внести, сумма, указанный...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14001</th>\n",
       "      <td>Была задолженность по кредитной карте. Банк по...</td>\n",
       "      <td>[задолженность, кредитный, карта, банк, подать...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14002</th>\n",
       "      <td>Срочно понадобилась определенная денежная сумм...</td>\n",
       "      <td>[срочно, понадобиться, определённый, денежный,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14003</th>\n",
       "      <td>Здравствуйте. В местном отделении Бинбанка г. ...</td>\n",
       "      <td>[здравствуйте, местный, отделение, бинбанка, г...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19994</th>\n",
       "      <td>Уважаемые представители Русфинанс Банка! Прошу...</td>\n",
       "      <td>[уважаемый, представитель, русфинанс, банк, пр...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>04 июня сняли с дебетовой карты банка 10 000 T...</td>\n",
       "      <td>[04, июнь, снять, дебетовый, карта, банк, 10, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>В апреле решил я купить шуруповерт. Посмотрел ...</td>\n",
       "      <td>[апрель, решить, купить, шуруповерт, посмотрет...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>Недавно взял потребкредит в этом банке. Все че...</td>\n",
       "      <td>[недавно, взять, потребкредить, это, банк, всё...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>Продолжение отзыва АльфаСтрахование, защищённа...</td>\n",
       "      <td>[продолжение, отзыв, альфастрахование, защитит...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6000 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    Text  \\\n",
       "idx                                                        \n",
       "13999  Замечательная история об открытии счета в банк...   \n",
       "14000  23.07.14г. я досрочно внес сумму, указанную оп...   \n",
       "14001  Была задолженность по кредитной карте. Банк по...   \n",
       "14002  Срочно понадобилась определенная денежная сумм...   \n",
       "14003  Здравствуйте. В местном отделении Бинбанка г. ...   \n",
       "...                                                  ...   \n",
       "19994  Уважаемые представители Русфинанс Банка! Прошу...   \n",
       "19995  04 июня сняли с дебетовой карты банка 10 000 T...   \n",
       "19996  В апреле решил я купить шуруповерт. Посмотрел ...   \n",
       "19997  Недавно взял потребкредит в этом банке. Все че...   \n",
       "19998  Продолжение отзыва АльфаСтрахование, защищённа...   \n",
       "\n",
       "                                      Preprocessed_texts  \n",
       "idx                                                       \n",
       "13999  [замечательный, история, открытие, счёт, банк,...  \n",
       "14000  [23.07.14г, досрочно, внести, сумма, указанный...  \n",
       "14001  [задолженность, кредитный, карта, банк, подать...  \n",
       "14002  [срочно, понадобиться, определённый, денежный,...  \n",
       "14003  [здравствуйте, местный, отделение, бинбанка, г...  \n",
       "...                                                  ...  \n",
       "19994  [уважаемый, представитель, русфинанс, банк, пр...  \n",
       "19995  [04, июнь, снять, дебетовый, карта, банк, 10, ...  \n",
       "19996  [апрель, решить, купить, шуруповерт, посмотрет...  \n",
       "19997  [недавно, взять, потребкредить, это, банк, всё...  \n",
       "19998  [продолжение, отзыв, альфастрахование, защитит...  \n",
       "\n",
       "[6000 rows x 2 columns]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "colab": {
     "background_save": true
    },
    "id": "ibP6Dhk38Z9o"
   },
   "outputs": [],
   "source": [
    "test['Sequences'] = test.apply(lambda row: text_to_sequence(row['Preprocessed_texts'], word_to_index), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "colab": {
     "background_save": true
    },
    "id": "xT8w930d9Eh6"
   },
   "outputs": [],
   "source": [
    "x_test = vectorize_sequences(test['Sequences'], max_words)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "fsbcPrO99O4f"
   },
   "source": [
    "Распознавание тональности отзывов"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "id": "zcWNaglR9N3Q"
   },
   "outputs": [],
   "source": [
    "result = lr.predict(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "id": "eTMvvcoF9bnd"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, ..., 0, 1, 1], dtype=int64)"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Y62Q5t4l9aEm"
   },
   "source": [
    "Добавляем столбец с результатами распознавания в dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "id": "UB4BFZsx9i7-"
   },
   "outputs": [],
   "source": [
    "test['Score'] = result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "t04jT2U89yfc"
   },
   "source": [
    "Постобработка результатов распознавания"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "id": "Ho6z_ldv-Jc5"
   },
   "outputs": [],
   "source": [
    "class_names = {0: 'Negative', 1: 'Positive'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "id": "kNMB5jtz9v1Q"
   },
   "outputs": [],
   "source": [
    "test.replace({'Score': class_names}, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Text</th>\n",
       "      <th>Preprocessed_texts</th>\n",
       "      <th>Sequences</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>idx</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>13999</th>\n",
       "      <td>Замечательная история об открытии счета в банк...</td>\n",
       "      <td>[замечательный, история, открытие, счёт, банк,...</td>\n",
       "      <td>[896, 161, 226, 11, 2, 249, 120, 2752, 331, 86...</td>\n",
       "      <td>Negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14000</th>\n",
       "      <td>23.07.14г. я досрочно внес сумму, указанную оп...</td>\n",
       "      <td>[23.07.14г, досрочно, внести, сумма, указанный...</td>\n",
       "      <td>[593, 176, 23, 477, 89, 461, 345, 157, 538, 2,...</td>\n",
       "      <td>Negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14001</th>\n",
       "      <td>Была задолженность по кредитной карте. Банк по...</td>\n",
       "      <td>[задолженность, кредитный, карта, банк, подать...</td>\n",
       "      <td>[127, 24, 3, 2, 283, 412, 9279, 2354, 1294, 32...</td>\n",
       "      <td>Negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14002</th>\n",
       "      <td>Срочно понадобилась определенная денежная сумм...</td>\n",
       "      <td>[срочно, понадобиться, определённый, денежный,...</td>\n",
       "      <td>[638, 806, 930, 188, 23, 558, 99, 57, 24, 3, 5...</td>\n",
       "      <td>Negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14003</th>\n",
       "      <td>Здравствуйте. В местном отделении Бинбанка г. ...</td>\n",
       "      <td>[здравствуйте, местный, отделение, бинбанка, г...</td>\n",
       "      <td>[510, 1588, 12, 232, 120, 3402, 5395, 1318, 44...</td>\n",
       "      <td>Negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19994</th>\n",
       "      <td>Уважаемые представители Русфинанс Банка! Прошу...</td>\n",
       "      <td>[уважаемый, представитель, русфинанс, банк, пр...</td>\n",
       "      <td>[486, 337, 3077, 2, 116, 873, 287, 135, 657, 2...</td>\n",
       "      <td>Positive</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>04 июня сняли с дебетовой карты банка 10 000 T...</td>\n",
       "      <td>[04, июнь, снять, дебетовый, карта, банк, 10, ...</td>\n",
       "      <td>[5242, 472, 196, 205, 3, 2, 118, 206, 694, 392...</td>\n",
       "      <td>Positive</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>В апреле решил я купить шуруповерт. Посмотрел ...</td>\n",
       "      <td>[апрель, решить, купить, шуруповерт, посмотрет...</td>\n",
       "      <td>[397, 39, 632, 423, 1307, 251, 873, 287, 1989,...</td>\n",
       "      <td>Negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>Недавно взял потребкредит в этом банке. Все че...</td>\n",
       "      <td>[недавно, взять, потребкредить, это, банк, всё...</td>\n",
       "      <td>[615, 121, 5286, 4, 2, 5, 536, 247, 35, 829, 8...</td>\n",
       "      <td>Positive</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>Продолжение отзыва АльфаСтрахование, защищённа...</td>\n",
       "      <td>[продолжение, отзыв, альфастрахование, защитит...</td>\n",
       "      <td>[2477, 90, 5145, 3094, 761, 517, 331, 4119, 12...</td>\n",
       "      <td>Positive</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    Text  \\\n",
       "idx                                                        \n",
       "13999  Замечательная история об открытии счета в банк...   \n",
       "14000  23.07.14г. я досрочно внес сумму, указанную оп...   \n",
       "14001  Была задолженность по кредитной карте. Банк по...   \n",
       "14002  Срочно понадобилась определенная денежная сумм...   \n",
       "14003  Здравствуйте. В местном отделении Бинбанка г. ...   \n",
       "...                                                  ...   \n",
       "19994  Уважаемые представители Русфинанс Банка! Прошу...   \n",
       "19995  04 июня сняли с дебетовой карты банка 10 000 T...   \n",
       "19996  В апреле решил я купить шуруповерт. Посмотрел ...   \n",
       "19997  Недавно взял потребкредит в этом банке. Все че...   \n",
       "19998  Продолжение отзыва АльфаСтрахование, защищённа...   \n",
       "\n",
       "                                      Preprocessed_texts  \\\n",
       "idx                                                        \n",
       "13999  [замечательный, история, открытие, счёт, банк,...   \n",
       "14000  [23.07.14г, досрочно, внести, сумма, указанный...   \n",
       "14001  [задолженность, кредитный, карта, банк, подать...   \n",
       "14002  [срочно, понадобиться, определённый, денежный,...   \n",
       "14003  [здравствуйте, местный, отделение, бинбанка, г...   \n",
       "...                                                  ...   \n",
       "19994  [уважаемый, представитель, русфинанс, банк, пр...   \n",
       "19995  [04, июнь, снять, дебетовый, карта, банк, 10, ...   \n",
       "19996  [апрель, решить, купить, шуруповерт, посмотрет...   \n",
       "19997  [недавно, взять, потребкредить, это, банк, всё...   \n",
       "19998  [продолжение, отзыв, альфастрахование, защитит...   \n",
       "\n",
       "                                               Sequences     Score  \n",
       "idx                                                                 \n",
       "13999  [896, 161, 226, 11, 2, 249, 120, 2752, 331, 86...  Negative  \n",
       "14000  [593, 176, 23, 477, 89, 461, 345, 157, 538, 2,...  Negative  \n",
       "14001  [127, 24, 3, 2, 283, 412, 9279, 2354, 1294, 32...  Negative  \n",
       "14002  [638, 806, 930, 188, 23, 558, 99, 57, 24, 3, 5...  Negative  \n",
       "14003  [510, 1588, 12, 232, 120, 3402, 5395, 1318, 44...  Negative  \n",
       "...                                                  ...       ...  \n",
       "19994  [486, 337, 3077, 2, 116, 873, 287, 135, 657, 2...  Positive  \n",
       "19995  [5242, 472, 196, 205, 3, 2, 118, 206, 694, 392...  Positive  \n",
       "19996  [397, 39, 632, 423, 1307, 251, 873, 287, 1989,...  Negative  \n",
       "19997  [615, 121, 5286, 4, 2, 5, 536, 247, 35, 829, 8...  Positive  \n",
       "19998  [2477, 90, 5145, 3094, 761, 517, 331, 4119, 12...  Positive  \n",
       "\n",
       "[6000 rows x 4 columns]"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Сохранение результатов распознавания в файл"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "test['Score'].to_csv('submission.csv', sep='\\t')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Файл submission.csv можно отправить на платформу для проверки качества решения."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
